<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>


  <script type="text/javascript">

    var arr = [{ 'x': 4 }, { 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }, { 'x': 4 }];

    //  去重
    // 答案 [{ 'x': 4 }, { 'x': 1 }, { 'x': 2 }, { 'x': 3 }]



    // 方法1：利用对象访问属性的方法，判断对象中是否存在key
    // var NewArr = [];
    // var obj = {};
    // for (var i = 0; i < arr.length; i++) {
    //   if (!obj[arr[i].x]) {
    //     NewArr.push(arr[i]);
    //     obj[arr[i].x] = true;
    //   }
    // }
    // console.log(NewArr);


    // 利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数，第二个参数是item的初始值
    let obj = {};
    arr = arr.reduce((item, next) => {
      if (!obj[next.x]) {
        item.push(next);
        obj[next.x] = true;
      }
      return item;
    }, []);
    console.log(arr);



























    // var NewArr = []
    // for (var i = 0; i< arr.length; i++){

    //   for(let j = 0;j <NewArr.length; j++){
    //     console.log(arr[i].x + "3333")
    //     console.log(NewArr.indexOf(arr[i].x))
    //     console.log("jjjjj")
    //     if(NewArr.indexOf(arr[i].x) == -1){
    //       NewArr.push(arr[i].x)
    //       // arr.splice(i,1)
    //       // i--
    //       console.log("进来了")
    //     }
    //   }
    // }

    // console.log(NewArr)
  </script>
</body>

</html>